// 函数作为变量
var say = function (name,age){
	console.log('实参个数：',arguments.length)
	console.log(name,age)
}
say("aaa")  // 传递一个参数，function 就接收一个参数，其他为undefined
new say('none',12) //new 风格的调用方式，会新建对象
function execute(someFunction, value) {
  someFunction(value);  // 变量名加上() ,把它当做函数处理，你要是敢传入参数，它就敢接收参数
}

execute(say, "Hello"); // 参数：一个函数名称，一个参数


// 闭包
var add = (function () {
    var counter = 0; // 外人不可见这个变量
    return function () {
        return counter += 1;
    }
})();
// 现在 add 为 一个函数，函数体为 { return counter += 1;  }
// 调用 add 方法形式为 add(), 有返回值

var res = 0;
res = add()
console.assert(res == 1)
console.assert(typeof add === 'function')  // 真 ，为字符串
